home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / sound / cmod312.zip / CAPAPLA2.ZIP / CAPAPLA2.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-17  |  20KB  |  635 lines

  1.  
  2. (*
  3.    CapaPlay II Unit for Pascal
  4.  
  5.    Don't forget to add the {$M stacksize,0,0} into your program header!
  6. *)
  7.  
  8. {$G+}
  9. unit capapla2;
  10.  
  11. interface
  12.  
  13. (****************************** GUS Settings *********************************)
  14.  
  15. function CP_GetIRQ:byte; far;
  16. procedure CP_SetIRQ(NewIRQ:byte); far;
  17. function CP_GetDMA:byte; far;
  18. procedure CP_SetDMA(NewDMA:byte); far;
  19. function CP_GetBasePort:word; far;
  20. procedure CP_SetBasePort(NewBasePort:word); far;
  21. procedure CP_SetLineIn(LineInState:byte); far;
  22. procedure CP_SetMicIn(MicInState:byte); far;
  23.  
  24. (******************************* Load/Unload *********************************)
  25.  
  26. function CP_LoadModule(ModName:string;StartOffset:longint;TransferMode:byte):byte; far;
  27. function CP_LoadOnlyPatterns(ModName:string;StartOffset:longint;TransferMode:byte):byte; far;
  28. procedure CP_FreeModule; far;
  29.  
  30. (***************************** Start/Stop/Pause ******************************)
  31.  
  32. procedure CP_StartModule(Amplification:byte;DefaultPanning:byte;TimerMode:byte); far;
  33. procedure CP_StopModule; far;
  34. function CP_PauseModule:byte; far;
  35.  
  36. (********************** Set General Module Information ***********************)
  37.  
  38. procedure CP_SetSpeedZeroMode(SpeedZeroMode:byte); far;
  39. procedure CP_SetPanEffectMode(PanEffectMode:byte); far;
  40. procedure CP_SetVBlankMode(VBlankMode:byte); far;
  41. procedure CP_SetAmigaLimitsMode(AmigaLimitsMode:byte); far;
  42.  
  43. (********************** Get General Module Information ***********************)
  44.  
  45. function CP_GetModuleName:string; far;
  46. function CP_GetModuleType:byte; far;
  47. function CP_GetModuleLength:byte; far;
  48. function CP_GetNumOfPatterns:word; far;
  49. function CP_GetNumOfInstruments:byte; far;
  50. function CP_GetNumOfChannels:byte; far;
  51. function CP_GetNumOfUsedChannels:byte; far;
  52. function CP_GetRestartPosition:byte; far;
  53. function CP_GetUsedPatternMemory:longint; far;
  54. function CP_GetUsedInstrumentInfoMemory:longint; far;
  55. function CP_GetUsedGUSMemory:longint; far;
  56. function CP_GetFileSize:longint; far;
  57.  
  58. (********************** Set General Playing Information **********************)
  59.  
  60. procedure CP_SetPosition(NewPosition:word); far;
  61. procedure CP_SetGlobalVolume(NewVolume:word); far;
  62. procedure CP_SetMainVolume(NewVolume:word); far;
  63. procedure CP_SetSpeed(NewSpeed:word); far;
  64. procedure CP_SetTempo(NewTempo:word); far;
  65. procedure CP_RestoreSpeedAndTempo; far;
  66. procedure CP_SetDefaultPanning(DefaultPanning:shortint); far;
  67.  
  68. (********************** Get General Playing Information **********************)
  69.  
  70. function CP_GetRow:byte; far;
  71. function CP_GetNumOfRows(PositionNum:word):word; far;
  72. function CP_GetPosition:byte; far;
  73. function CP_GetPattern:byte; far;
  74. function CP_GetGlobalVolume:byte; far;
  75. procedure CP_RestoreInitialVolume; far;
  76. function CP_GetMainVolume:byte; far;
  77. function CP_GetSpeed:byte; far;
  78. function CP_GetTempo:byte; far;
  79. function CP_GetPlayingTime:word; far;
  80. function CP_GetTimer:longint; far;
  81. function CP_GetLoopCounter:byte; far;
  82.  
  83. (************************* Set Channel Information ***************************)
  84.  
  85. function CP_SetChannelMute(ChannelNum:word;MuteState:byte):byte; far;
  86. procedure CP_SetChannelPanning(ChannelNum:word;NewPanning:byte); far;
  87. procedure CP_PlaySample(ChannelNum:word;InstrumentNum:word;SampleNum:word;Note:byte;Octave:byte); far;
  88. procedure CP_StopSample(ChannelNum:word); far;
  89.  
  90. (************************* Get Channel Information ***************************)
  91.  
  92. function CP_GetChannelNote(ChannelNum:word):byte; far;
  93. function CP_GetChannelOctave(ChannelNum:word):byte; far;
  94. function CP_GetChannelVolume(ChannelNum:word):byte; far;
  95. function CP_GetChannelEffect(ChannelNum:word):byte; far;
  96. function CP_GetChannelEffectParams(ChannelNum:word):byte; far;
  97. function CP_GetChannelInstrument(ChannelNum:word):byte; far;
  98. function CP_GetChannelSample(ChannelNum:word):byte; far;
  99. function CP_GetChannelBar(ChannelNum:word):byte; far;
  100. function CP_GetChannelNoteTrigger(ChannelNum:word):byte; far;
  101. function CP_GetChannelPanning(ChannelNum:word):byte; far;
  102. function CP_GetChannelMute(ChannelNum:word):byte; far;
  103.  
  104. (******************** Set Instrument/Sample Information **********************)
  105.  
  106. function CP_SetSampleMute(InstrumentNum:word;SampleNum:word;MuteState:byte):byte; far;
  107.  
  108. (******************** Get Instrument/Sample Information **********************)
  109.  
  110. function CP_GetInstrumentName(InstrumentNum:word):string; far;
  111. function CP_GetNumOfSamples(InstrumentNum:word):byte; far;
  112. function CP_GetSampleName(InstrumentNum:word;SampleNum:word):string; far;
  113. function CP_GetSampleSize(InstrumentNum:word;SampleNum:word):longint; far;
  114. function CP_GetSampleC4Spd(InstrumentNum:word;SampleNum:word):word; far;
  115. function CP_GetSampleVolume(InstrumentNum:word;SampleNum:word):byte; far;
  116. function CP_GetSamplePanning(InstrumentNum:word;SampleNum:word):byte; far;
  117. function CP_GetSampleLoopType(InstrumentNum:word;SampleNum:word):byte; far;
  118. function CP_GetSampleLoopBegin(InstrumentNum:word;SampleNum:word):longint; far;
  119. function CP_GetSampleLength(InstrumentNum:word;SampleNum:word):longint; far;
  120. function CP_GetSample16Bit(InstrumentNum:word;SampleNum:word):byte; far;
  121. function CP_GetSampleMute(InstrumentNum:word;SampleNum:word):byte; far;
  122.  
  123. implementation
  124.  
  125. function _CP_GetIRQ:byte; far; external;
  126. procedure _CP_SetIRQ(NewIRQ:byte); far; external;
  127. function _CP_GetDMA:byte; far; external;
  128. procedure _CP_SetDMA(NewDMA:byte); far; external;
  129. function _CP_GetBasePort:word; far; external;
  130. procedure _CP_SetBasePort(NewBasePort:word); far; external;
  131. procedure _CP_SetLineIn(LineInState:byte); far; external;
  132. procedure _CP_SetMicIn(MicInState:byte); far; external;
  133. function _CP_LoadModule(TransferMode:byte;StartOffset:longint;ModSeg:word;ModOfs:word):byte; far; external;
  134. function _CP_LoadOnlyPatterns(TransferMode:byte;StartOffset:longint;ModSeg:word;ModOfs:word):byte; far; external;
  135. procedure _CP_FreeModule; far; external;
  136. procedure _CP_StartModule(TimerMode:byte;DefaultPanning:byte;Amplification:byte); far; external;
  137. procedure _CP_StopModule; far; external;
  138. function _CP_PauseModule:byte; far; external;
  139. procedure _CP_SetSpeedZeroMode(SpeedZeroMode:byte); far; external;
  140. procedure _CP_SetPanEffectMode(PanEffectMode:byte); far; external;
  141. procedure _CP_SetVBlankMode(VBlankMode:byte); far; external;
  142. procedure _CP_SetAmigaLimitsMode(AmigaLimitsMode:byte); far; external;
  143. function _CP_GetModuleName:longint; far; external;
  144. function _CP_GetModuleType:byte; far; external;
  145. function _CP_GetModuleLength:byte; far; external;
  146. function _CP_GetNumOfPatterns:word; far; external;
  147. function _CP_GetNumOfInstruments:byte; far; external;
  148. function _CP_GetNumOfChannels:byte; far; external;
  149. function _CP_GetNumOfUsedChannels:byte; far; external;
  150. function _CP_GetRestartPosition:byte; far; external;
  151. function _CP_GetUsedPatternMemory:longint; far; external;
  152. function _CP_GetUsedInstrumentInfoMemory:longint; far; external;
  153. function _CP_GetUsedGUSMemory:longint; far; external;
  154. function _CP_GetFileSize:longint; far; external;
  155. procedure _CP_SetPosition(NewPosition:word); far; external;
  156. procedure _CP_SetGlobalVolume(NewVolume:word); far; external;
  157. procedure _CP_SetMainVolume(NewVolume:word); far; external;
  158. procedure _CP_SetSpeed(NewSpeed:word); far; external;
  159. procedure _CP_SetTempo(NewTempo:word); far; external;
  160. procedure _CP_RestoreSpeedAndTempo; far; external;
  161. procedure _CP_SetDefaultPanning(DefaultPanning:shortint); far; external;
  162. function _CP_GetRow:byte; far; external;
  163. function _CP_GetNumOfRows(PositionNum:word):word; far; external;
  164. function _CP_GetPosition:byte; far; external;
  165. function _CP_GetPattern:byte; far; external;
  166. function _CP_GetGlobalVolume:byte; far; external;
  167. procedure _CP_RestoreInitialVolume; far; external;
  168. function _CP_GetMainVolume:byte; far; external;
  169. function _CP_GetSpeed:byte; far; external;
  170. function _CP_GetTempo:byte; far; external;
  171. function _CP_GetPlayingTime:word; far; external;
  172. function _CP_GetTimer:longint; far; external;
  173. function _CP_GetLoopCounter:byte; far; external;
  174. function _CP_SetChannelMute(MuteState:byte;ChannelNum:word):byte; far; external;
  175. procedure _CP_SetChannelPanning(NewPanning:byte;ChannelNum:word); far; external;
  176. procedure _CP_PlaySample(Octave:byte;Note:byte;SampleNum:word;InstrumentNum:word;ChannelNum:word); far; external;
  177. procedure _CP_StopSample(ChannelNum:word); far; external;
  178. function _CP_GetChannelNote(ChannelNum:word):byte; far; external;
  179. function _CP_GetChannelOctave(ChannelNum:word):byte; far; external;
  180. function _CP_GetChannelVolume(ChannelNum:word):byte; far; external;
  181. function _CP_GetChannelEffect(ChannelNum:word):byte; far; external;
  182. function _CP_GetChannelEffectParams(ChannelNum:word):byte; far; external;
  183. function _CP_GetChannelInstrument(ChannelNum:word):byte; far; external;
  184. function _CP_GetChannelSample(ChannelNum:word):byte; far; external;
  185. function _CP_GetChannelBar(ChannelNum:word):byte; far; external;
  186. function _CP_GetChannelNoteTrigger(ChannelNum:word):byte; far; external;
  187. function _CP_GetChannelPanning(ChannelNum:word):byte; far; external;
  188. function _CP_GetChannelMute(ChannelNum:word):byte; far; external;
  189. function _CP_SetSampleMute(MuteState:byte;SampleNum:word;InstrumentNum:word):byte; far; external;
  190. function _CP_GetInstrumentName(InstrumentNum:word):longint; far; external;
  191. function _CP_GetNumOfSamples(InstrumentNum:word):byte; far; external;
  192. function _CP_GetSampleName(SampleNum:word;InstrumentNum:word):longint; far; external;
  193. function _CP_GetSampleSize(SampleNum:word;InstrumentNum:word):longint; far; external;
  194. function _CP_GetSampleC4Spd(SampleNum:word;InstrumentNum:word):word; far; external;
  195. function _CP_GetSampleVolume(SampleNum:word;InstrumentNum:word):byte; far; external;
  196. function _CP_GetSamplePanning(SampleNum:word;InstrumentNum:word):byte; far; external;
  197. function _CP_GetSampleLoopType(SampleNum:word;InstrumentNum:word):byte; far; external;
  198. function _CP_GetSampleLoopBegin(SampleNum:word;InstrumentNum:word):longint; far; external;
  199. function _CP_GetSampleLength(SampleNum:word;InstrumentNum:word):longint; far; external;
  200. function _CP_GetSample16Bit(SampleNum:word;InstrumentNum:word):byte; far; external;
  201. function _CP_GetSampleMute(SampleNum:word;InstrumentNum:word):byte; far; external;
  202. {$L CP2ASM.OBJ}
  203.  
  204.  
  205. function CP_GetIRQ:byte;
  206. begin
  207.   CP_GetIRQ:=_CP_GetIRQ;
  208. end;
  209.  
  210. procedure CP_SetIRQ(NewIRQ:byte);
  211. begin
  212.   _CP_SetIRQ(NewIRQ);
  213. end;
  214.  
  215. function CP_GetDMA:byte;
  216. begin
  217.   CP_GetDMA:=_CP_GetDMA;
  218. end;
  219.  
  220. procedure CP_SetDMA(NewDMA:byte);
  221. begin
  222.   _CP_SetDMA(NewDMA);
  223. end;
  224.  
  225. function CP_GetBasePort:word;
  226. begin
  227.   CP_GetBasePort:=_CP_GetBasePort;
  228. end;
  229.  
  230. procedure CP_SetBasePort(NewBasePort:word);
  231. begin
  232.   _CP_SetBasePort(NewBasePort);
  233. end;
  234.  
  235. procedure CP_SetLineIn(LineInState:byte);
  236. begin
  237.   _CP_SetLineIn(LineInState);
  238. end;
  239.  
  240. procedure CP_SetMicIn(MicInState:byte);
  241. begin
  242.   _CP_SetMicIn(MicInState);
  243. end;
  244.  
  245. function CP_LoadModule(ModName:string;StartOffset:longint;TransferMode:byte):byte;
  246. var c:char;
  247. begin
  248.   c:=ModName[length(ModName)+1];
  249.   ModName[length(ModName)+1]:=#0;
  250.   CP_LoadModule:=_CP_LoadModule(TransferMode,StartOffset,seg(ModName),ofs(ModName)+1);
  251.   ModName[length(ModName)+1]:=c;
  252. end;
  253.  
  254. function CP_LoadOnlyPatterns(ModName:string;StartOffset:longint;TransferMode:byte):byte;
  255. var c:char;
  256. begin
  257.   c:=ModName[length(ModName)+1];
  258.   ModName[length(ModName)+1]:=#0;
  259.   CP_LoadOnlyPatterns:=_CP_LoadOnlyPatterns(TransferMode,StartOffset,seg(ModName),ofs(ModName)+1);
  260.   ModName[length(ModName)+1]:=c;
  261. end;
  262.  
  263. procedure CP_FreeModule;
  264. begin
  265.   _CP_FreeModule;
  266. end;
  267.  
  268. procedure CP_StartModule(Amplification:byte;DefaultPanning:byte;TimerMode:byte);
  269. begin
  270.   _CP_StartModule(TimerMode,DefaultPanning,Amplification);
  271. end;
  272.  
  273. procedure CP_StopModule;
  274. begin
  275.   _CP_StopModule;
  276. end;
  277.  
  278. function CP_PauseModule:byte;
  279. begin
  280.   CP_PauseModule:=_CP_PauseModule;
  281. end;
  282.  
  283. procedure CP_SetSpeedZeroMode(SpeedZeroMode:byte);
  284. begin
  285.   _CP_SetSpeedZeroMode(SpeedZeroMode);
  286. end;
  287.  
  288. procedure CP_SetPanEffectMode(PanEffectMode:byte);
  289. begin
  290.   _CP_SetPanEffectMode(PanEffectMode);
  291. end;
  292.  
  293. procedure CP_SetVBlankMode(VBlankMode:byte);
  294. begin
  295.   _CP_SetVBlankMode(VBlankMode);
  296. end;
  297.  
  298. procedure CP_SetAmigaLimitsMode(AmigaLimitsMode:byte);
  299. begin
  300.   _CP_SetAmigaLimitsMode(AmigaLimitsMode);
  301. end;
  302.  
  303. function CP_GetModuleName:string;
  304. var b:byte;
  305.     cachedword:longint;
  306.     nameseg,nameofs:word;
  307. begin
  308.   b:=0;
  309.   cachedword:=_CP_GetModuleName;
  310.   nameofs:=word(cachedword);
  311.   nameseg:=word(cachedword shr 16);
  312.   while (mem[nameseg:nameofs+b]<>0) do
  313.   begin
  314.     CP_GetModuleName[b+1]:=chr(mem[nameseg:nameofs+b]);
  315.     inc(b);
  316.   end;
  317.   CP_GetModuleName[0]:=chr(b);
  318. end;
  319.  
  320. function CP_GetModuleType:byte;
  321. begin
  322.   CP_GetModuleType:=_CP_GetModuleType;
  323. end;
  324.  
  325. function CP_GetModuleLength:byte;
  326. begin
  327.   CP_GetModuleLength:=_CP_GetModuleLength;
  328. end;
  329.  
  330. function CP_GetNumOfPatterns:word;
  331. begin
  332.   CP_GetNumOfPatterns:=_CP_GetNumOfPatterns;
  333. end;
  334.  
  335. function CP_GetNumOfInstruments:byte;
  336. begin
  337.   CP_GetNumOfInstruments:=_CP_GetNumOfInstruments;
  338. end;
  339.  
  340. function CP_GetNumOfChannels:byte;
  341. begin
  342.   CP_GetNumOfChannels:=_CP_GetNumOfChannels;
  343. end;
  344.  
  345. function CP_GetNumOfUsedChannels:byte;
  346. begin
  347.   CP_GetNumOfUsedChannels:=_CP_GetNumOfUsedChannels;
  348. end;
  349.  
  350. function CP_GetRestartPosition:byte;
  351. begin
  352.   CP_GetRestartPosition:=_CP_GetRestartPosition;
  353. end;
  354.  
  355. function CP_GetUsedPatternMemory:longint;
  356. begin
  357.   CP_GetUsedPatternMemory:=_CP_GetUsedPatternMemory;
  358. end;
  359.  
  360. function CP_GetUsedInstrumentInfoMemory:longint;
  361. begin
  362.   CP_GetUsedInstrumentInfoMemory:=_CP_GetUsedInstrumentInfoMemory;
  363. end;
  364.  
  365. function CP_GetUsedGUSMemory:longint;
  366. begin
  367.   CP_GetUsedGUSMemory:=_CP_GetUsedGUSMemory;
  368. end;
  369.  
  370. function CP_GetFileSize:longint;
  371. begin
  372.   CP_GetFileSize:=_CP_GetFileSize;
  373. end;
  374.  
  375. procedure CP_SetPosition(NewPosition:word);
  376. begin
  377.   _CP_SetPosition(NewPosition);
  378. end;
  379.  
  380. procedure CP_SetGlobalVolume(NewVolume:word);
  381. begin
  382.   _CP_SetGlobalVolume(NewVolume);
  383. end;
  384.  
  385. procedure CP_SetMainVolume(NewVolume:word);
  386. begin
  387.   _CP_SetMainVolume(NewVolume);
  388. end;
  389.  
  390. procedure CP_SetSpeed(NewSpeed:word);
  391. begin
  392.   _CP_SetSpeed(NewSpeed);
  393. end;
  394.  
  395. procedure CP_SetTempo(NewTempo:word);
  396. begin
  397.   _CP_SetTempo(NewTempo);
  398. end;
  399.  
  400. procedure CP_RestoreSpeedAndTempo;
  401. begin
  402.   _CP_RestoreSpeedAndTempo;
  403. end;
  404.  
  405. procedure CP_SetDefaultPanning(DefaultPanning:shortint);
  406. begin
  407.   _CP_SetDefaultPanning(DefaultPanning);
  408. end;
  409.  
  410. function CP_GetRow:byte;
  411. begin
  412.   CP_GetRow:=_CP_GetRow;
  413. end;
  414.  
  415. function CP_GetNumOfRows(PositionNum:word):word;
  416. begin
  417.   CP_GetNumOfRows:=_CP_GetNumOfRows(PositionNum);
  418. end;
  419.  
  420. function CP_GetPosition:byte;
  421. begin
  422.   CP_GetPosition:=_CP_GetPosition;
  423. end;
  424.  
  425. function CP_GetPattern:byte;
  426. begin
  427.   CP_GetPattern:=_CP_GetPattern;
  428. end;
  429.  
  430. function CP_GetGlobalVolume:byte;
  431. begin
  432.   CP_GetGlobalVolume:=_CP_GetGlobalVolume;
  433. end;
  434.  
  435. procedure CP_RestoreInitialVolume;
  436. begin
  437.   _CP_RestoreInitialVolume;
  438. end;
  439.  
  440. function CP_GetMainVolume:byte;
  441. begin
  442.   CP_GetMainVolume:=_CP_GetMainVolume;
  443. end;
  444.  
  445. function CP_GetSpeed:byte;
  446. begin
  447.   CP_GetSpeed:=_CP_GetSpeed;
  448. end;
  449.  
  450. function CP_GetTempo:byte;
  451. begin
  452.   CP_GetTempo:=_CP_GetTempo;
  453. end;
  454.  
  455. function CP_GetPlayingTime:word;
  456. begin
  457.   CP_GetPlayingTime:=_CP_GetPlayingTime;
  458. end;
  459.  
  460. function CP_GetTimer:longint;
  461. begin
  462.   CP_GetTimer:=_CP_GetTimer;
  463. end;
  464.  
  465. function CP_GetLoopCounter:byte;
  466. begin
  467.   CP_GetLoopCounter:=_CP_GetLoopCounter;
  468. end;
  469.  
  470. function CP_SetChannelMute(ChannelNum:word;MuteState:byte):byte;
  471. begin
  472.   _CP_SetChannelMute(MuteState,ChannelNum);
  473. end;
  474.  
  475. procedure CP_SetChannelPanning(ChannelNum:word;NewPanning:byte);
  476. begin
  477.   _CP_SetChannelPanning(NewPanning,ChannelNum);
  478. end;
  479.  
  480. procedure CP_PlaySample(ChannelNum:word;InstrumentNum:word;SampleNum:word;Note:byte;Octave:byte);
  481. begin
  482.   _CP_PlaySample(Octave,Note,SampleNum,InstrumentNum,ChannelNum);
  483. end;
  484.  
  485. procedure CP_StopSample(ChannelNum:word);
  486. begin
  487.   _CP_StopSample(ChannelNum);
  488. end;
  489.  
  490. function CP_GetChannelNote(ChannelNum:word):byte;
  491. begin
  492.   CP_GetChannelNote:=_CP_GetChannelNote(ChannelNum);
  493. end;
  494.  
  495. function CP_GetChannelOctave(ChannelNum:word):byte;
  496. begin
  497.   CP_GetChannelOctave:=_CP_GetChannelOctave(ChannelNum);
  498. end;
  499.  
  500. function CP_GetChannelVolume(ChannelNum:word):byte;
  501. begin
  502.   CP_GetChannelVolume:=_CP_GetChannelVolume(ChannelNum);
  503. end;
  504.  
  505. function CP_GetChannelEffect(ChannelNum:word):byte;
  506. begin
  507.   CP_GetChannelEffect:=_CP_GetChannelEffect(ChannelNum);
  508. end;
  509.  
  510. function CP_GetChannelEffectParams(ChannelNum:word):byte;
  511. begin
  512.   CP_GetChannelEffectParams:=_CP_GetChannelEffectParams(ChannelNum);
  513. end;
  514.  
  515. function CP_GetChannelInstrument(ChannelNum:word):byte;
  516. begin
  517.   CP_GetChannelInstrument:=_CP_GetChannelInstrument(ChannelNum);
  518. end;
  519.  
  520. function CP_GetChannelSample(ChannelNum:word):byte;
  521. begin
  522.   CP_GetChannelSample:=_CP_GetChannelSample(ChannelNum);
  523. end;
  524.  
  525. function CP_GetChannelBar(ChannelNum:word):byte;
  526. begin
  527.   CP_GetChannelBar:=_CP_GetChannelBar(ChannelNum);
  528. end;
  529.  
  530. function CP_GetChannelNoteTrigger(ChannelNum:word):byte;
  531. begin
  532.   CP_GetChannelNoteTrigger:=_CP_GetChannelNoteTrigger(ChannelNum);
  533. end;
  534.  
  535. function CP_GetChannelPanning(ChannelNum:word):byte;
  536. begin
  537.   CP_GetChannelPanning:=_CP_GetChannelPanning(ChannelNum);
  538. end;
  539.  
  540. function CP_GetChannelMute(ChannelNum:word):byte;
  541. begin
  542.   CP_GetChannelMute:=_CP_GetChannelMute(ChannelNum);
  543. end;
  544.  
  545. function CP_SetSampleMute(InstrumentNum:word;SampleNum:word;MuteState:byte):byte;
  546. begin
  547.   _CP_SetSampleMute(MuteState,SampleNum,InstrumentNum);
  548. end;
  549.  
  550. function CP_GetInstrumentName(InstrumentNum:word):string;
  551. var b:byte;
  552.     cachedword:longint;
  553.     nameseg,nameofs:word;
  554. begin
  555.   b:=0;
  556.   cachedword:=_CP_GetInstrumentName(InstrumentNum);
  557.   nameofs:=word(cachedword);
  558.   nameseg:=word(cachedword shr 16);
  559.   while (mem[nameseg:nameofs+b]<>0) do
  560.   begin
  561.     CP_GetInstrumentName[b+1]:=chr(mem[nameseg:nameofs+b]);
  562.     inc(b);
  563.   end;
  564.   CP_GetInstrumentName[0]:=chr(b);
  565. end;
  566.  
  567. function CP_GetNumOfSamples(InstrumentNum:word):byte;
  568. begin
  569.   CP_GetNumOfSamples:=_CP_GetNumOfSamples(InstrumentNum);
  570. end;
  571.  
  572. function CP_GetSampleName(InstrumentNum:word;SampleNum:word):string;
  573. var b:byte;
  574.     cachedword:longint;
  575.     nameseg,nameofs:word;
  576. begin
  577.   b:=0;
  578.   cachedword:=_CP_GetSampleName(SampleNum,InstrumentNum);
  579.   nameofs:=word(cachedword);
  580.   nameseg:=word(cachedword shr 16);
  581.   while (mem[nameseg:nameofs+b]<>0) do
  582.   begin
  583.     CP_GetSampleName[b+1]:=chr(mem[nameseg:nameofs+b]);
  584.     inc(b);
  585.   end;
  586.   CP_GetSampleName[0]:=chr(b);
  587. end;
  588.  
  589. function CP_GetSampleSize(InstrumentNum:word;SampleNum:word):longint;
  590. begin
  591.   CP_GetSampleSize:=_CP_GetSampleSize(SampleNum,InstrumentNum);
  592. end;
  593.  
  594. function CP_GetSampleC4Spd(InstrumentNum:word;SampleNum:word):word;
  595. begin
  596.   CP_GetSampleC4Spd:=_CP_GetSampleC4Spd(SampleNum,InstrumentNum);
  597. end;
  598.  
  599. function CP_GetSampleVolume(InstrumentNum:word;SampleNum:word):byte;
  600. begin
  601.   CP_GetSampleVolume:=_CP_GetSampleVolume(SampleNum,InstrumentNum);
  602. end;
  603.  
  604. function CP_GetSamplePanning(InstrumentNum:word;SampleNum:word):byte;
  605. begin
  606.   CP_GetSamplePanning:=_CP_GetSamplePanning(SampleNum,InstrumentNum);
  607. end;
  608.  
  609. function CP_GetSampleLoopType(InstrumentNum:word;SampleNum:word):byte;
  610. begin
  611.   CP_GetSampleLoopType:=_CP_GetSampleLoopType(SampleNum,InstrumentNum);
  612. end;
  613.  
  614. function CP_GetSampleLoopBegin(InstrumentNum:word;SampleNum:word):longint;
  615. begin
  616.   CP_GetSampleLoopBegin:=_CP_GetSampleLoopBegin(SampleNum,InstrumentNum);
  617. end;
  618.  
  619. function CP_GetSampleLength(InstrumentNum:word;SampleNum:word):longint;
  620. begin
  621.   CP_GetSampleLength:=_CP_GetSampleLength(SampleNum,InstrumentNum);
  622. end;
  623.  
  624. function CP_GetSample16Bit(InstrumentNum:word;SampleNum:word):byte;
  625. begin
  626.   CP_GetSample16Bit:=_CP_GetSample16Bit(SampleNum,InstrumentNum);
  627. end;
  628.  
  629. function CP_GetSampleMute(InstrumentNum:word;SampleNum:word):byte;
  630. begin
  631.   CP_GetSampleMute:=_CP_GetSampleMute(SampleNum,InstrumentNum);
  632. end;
  633.  
  634. end.
  635.